package com.changanw.jedis.pipeline;

import com.changanw.jedis.CallWithJedis;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

public class Redis {
    private JedisPool jedisPool;

    public Redis() {
        GenericObjectPoolConfig config = new GenericObjectPoolConfig();
        //连接池最大空闲数量
        config.setMaxIdle(300);
         //最大连接数
        config.setMaxTotal(1000);
        //连接最大等待时间，如果是 -1 表示没有限制
        config.setMaxWaitMillis(30000);
        //在空闲时检查有效性
        config.setTestOnBorrow(true);
        /**
        * 1. Redis 地址
        * 2. Redis 端口
        * 3. 连接超时时间
         **/
        jedisPool = new JedisPool(config, "localhost", 6379, 30000);
    }
    public void execute(CallWithJedis callWithJedis){
        try(Jedis resource = jedisPool.getResource()) {
            callWithJedis.call(resource);
        }
    }

}
